#!/bin/bash
set -e  # 当任何命令失败时，自动退出脚本

work_dir="/home/adt/bags/work_space"
rosbag_dir="$work_dir/bags"
data_path="$work_dir/datasets"
out_path="$work_dir/dataview"
anno_path="$work_dir/annotate"

split_ratio="10,0,0" #一个包内train:test:val
val_datasets="__001,__000" #一个包内train:test:val
#split_ratio="0,0,10" #一个包内train:test:val
sweeps=10 #n个历史帧

# 封装命令执行和错误处理的函数
run_command() {
    local cmd="$1"
    local dsc="$2"
    echo "Running: $cmd"
    eval $cmd
    if [ $? -ne 0 ]; then
        echo "$dsc 运行失败，停止执行！！！"
        exit 1
    else
      echo "$dsc 运行成功。"
    fi
}


#####
# 添加脚本规则:
# run_command "python 脚本 参数列表"  "功能描述”
#####

echo "run_carla.sh 开始处理 $data_path"

# 解析 rosbag   sh脚本运行可能有问题，则手动运行即可
cd carla || { echo "无法进入 carla 目录"; exit 1; }

run_command "python parse_ros_carla.py --rosbag-dir '$rosbag_dir' --data-path '$data_path'"
echo "rosbag解析成功。"

## 同步数据
run_command "python sync_data.py --data-path '$data_path'"  "数据同步"

## 假相机归一化  如果以carla为基准，则使用假归一化(软连接原图和内参)
run_command "python disort_newmat.py --data-path '$data_path'"  "相机归一化"

## 数据可视化(可选)
run_command "python dataset_view.py --data-path '$data_path' --out-path '$out_path' --sync-time"  "数据可视化"

cd .. || { echo "无法退出 carla 目录"; exit 1; }

## 真相机归一化
#run_command "python disort_newmat.py --data-path '$data_path'"  "相机归一化"

### 格式转换
run_command "python reformat.py --data-path '$data_path'" "格式转换"

# 数据划分
run_command "python split_datasets.py --data-path '$data_path' --split '$split_ratio' --val_datasets '$val_datasets'"  "数据划分"

## pkl生成
run_command "python dataset2pkl.py --data-path '$data_path' --sweeps '$sweeps' --no-db"  "pkl生成"



echo "处理完毕"